{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "c982abca",
   "metadata": {},
   "source": [
    "# Interpretation 3A: KAN Compiler for PDE\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b9ec6c4",
   "metadata": {},
   "source": [
    "In scientific applications, we sometimes know empirical formulas or approximate solutions, represented as symbolic formulas. It would be nice to initialize the KAN network to be the approximate solution, and then fine tune the KAN network. "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d2efb12",
   "metadata": {},
   "source": [
    "In this notebook, We aim to solve a 2D poisson equation $\\nabla^2 f(x,y) = -2\\pi^2({\\rm sin}(\\pi x){\\rm sin}(\\pi y) + 4\\epsilon\\ {\\rm sin}(2\\pi x){\\rm sin}(2\\pi y))$, with boundary condition $f(-1,y)=f(1,y)=f(x,-1)=f(x,1)=0$. The ground truth solution is $f(x,y)={\\rm sin}(\\pi x){\\rm sin}(\\pi y)+\\epsilon\\ {\\rm sin}(2\\pi x){\\rm sin}(2\\pi y)$. We set $\\epsilon$ to be a small number, and assume to know the approximate solution $f\\approx f_{\\rm approx}={\\rm sin}(\\pi x){\\rm sin}(\\pi y)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d8f94f0f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.1\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x200 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan.compiler import kanpiler\n",
    "from sympy import *\n",
    "from kan.utils import create_dataset\n",
    "import torch\n",
    "\n",
    "input_variables = x,y = symbols('x y')\n",
    "expr = sin(pi*x) * sin(pi*y) #+ 0.01 * sin(2*pi*x) * sin(2*pi*y)\n",
    "\n",
    "model = kanpiler(input_variables, expr, grid=5)\n",
    "\n",
    "x = torch.rand(100,2) * 2 - 1\n",
    "model.get_act(x)\n",
    "\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "381b8a03",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.2\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.expand_depth()\n",
    "model.get_act(x)\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5c5f92c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.3\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 18 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.expand_width(1, 1, sum_bool=False)\n",
    "model.get_act(x)\n",
    "model.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "45c8e738",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving model version 0.4\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 18 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.perturb(mag=0.01, mode='all')\n",
    "model.get_act(x)\n",
    "model.plot(metric='forward_n')\n",
    "# purple means both symbolic front (red) and spline front (black) are active"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f27160d3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e0aa12c1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "checkpoint directory created: ./model\n",
      "saving model version 0.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "pde loss: 2.16e-01 | bc loss: 1.21e-04 | l2: 6.99e-05 : 100%|███| 2001/2001 [02:03<00:00, 16.24it/s]\n"
     ]
    }
   ],
   "source": [
    "from kan import *\n",
    "import matplotlib.pyplot as plt\n",
    "from torch import autograd\n",
    "from tqdm import tqdm\n",
    "\n",
    "dim = 2\n",
    "np_i = 21 # number of interior points (along each dimension)\n",
    "np_b = 21 # number of boundary points (along each dimension)\n",
    "ranges = [-1, 1]\n",
    "\n",
    "#mode = 'fine_tune'\n",
    "mode = 'from_scratch'\n",
    "\n",
    "if mode == 'from_scratch':\n",
    "    model = KAN(width=[2,[0,2],1], grid=5, k=3, seed=3)\n",
    "else:\n",
    "    # use the model defined above\n",
    "    pass\n",
    "\n",
    "def batch_jacobian(func, x, create_graph=False):\n",
    "    # x in shape (Batch, Length)\n",
    "    def _func_sum(x):\n",
    "        return func(x).sum(dim=0)\n",
    "    return autograd.functional.jacobian(_func_sum, x, create_graph=create_graph).permute(1,0,2)\n",
    "\n",
    "# define solution\n",
    "epsilon = 0.01\n",
    "sol_fun = lambda x: torch.sin(torch.pi*x[:,[0]])*torch.sin(torch.pi*x[:,[1]]) + epsilon * torch.sin(2*torch.pi*x[:,[0]])*torch.sin(2*torch.pi*x[:,[1]])\n",
    "source_fun = lambda x: -2*torch.pi**2 * (torch.sin(torch.pi*x[:,[0]])*torch.sin(torch.pi*x[:,[1]]) + 4 * epsilon * torch.sin(2*torch.pi*x[:,[0]])*torch.sin(2*torch.pi*x[:,[1]]))\n",
    "\n",
    "# interior\n",
    "sampling_mode = 'mesh' # 'ranndom' or 'mesh'\n",
    "\n",
    "x_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "y_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "X, Y = torch.meshgrid(x_mesh, y_mesh, indexing=\"ij\")\n",
    "if sampling_mode == 'mesh':\n",
    "    #mesh\n",
    "    x_i = torch.stack([X.reshape(-1,), Y.reshape(-1,)]).permute(1,0)\n",
    "else:\n",
    "    #random\n",
    "    x_i = torch.rand((np_i**2,2))*2-1\n",
    "\n",
    "# boundary, 4 sides\n",
    "helper = lambda X, Y: torch.stack([X.reshape(-1,), Y.reshape(-1,)]).permute(1,0)\n",
    "xb1 = helper(X[0], Y[0])\n",
    "xb2 = helper(X[-1], Y[0])\n",
    "xb3 = helper(X[:,0], Y[:,0])\n",
    "xb4 = helper(X[:,0], Y[:,-1])\n",
    "x_b = torch.cat([xb1, xb2, xb3, xb4], dim=0)\n",
    "\n",
    "steps = 2001\n",
    "alpha = 0.01\n",
    "log = 1\n",
    "\n",
    "def train():\n",
    "    \n",
    "    l2s = []\n",
    "    \n",
    "    #optimizer = LBFGS(model.parameters(), lr=1, history_size=10, line_search_fn=\"strong_wolfe\", tolerance_grad=1e-32, tolerance_change=1e-32, tolerance_ys=1e-32)\n",
    "    if mode == 'from_scratch':\n",
    "        lr = 1e-2\n",
    "    if mode == 'fine_tune':\n",
    "        lr = 1e-3\n",
    "    optimizer = torch.optim.Adam(model.parameters(), lr=lr)\n",
    "    \n",
    "    pbar = tqdm(range(steps), desc='description', ncols=100)\n",
    "\n",
    "    for _ in pbar:\n",
    "        \n",
    "        \n",
    "        def closure():\n",
    "            global pde_loss, bc_loss\n",
    "            optimizer.zero_grad()\n",
    "            # interior loss\n",
    "            sol = sol_fun(x_i)\n",
    "            sol_D1_fun = lambda x: batch_jacobian(model, x, create_graph=True)[:,0,:]\n",
    "            sol_D1 = sol_D1_fun(x_i)\n",
    "            sol_D2 = batch_jacobian(sol_D1_fun, x_i, create_graph=True)[:,:,:]\n",
    "            lap = torch.sum(torch.diagonal(sol_D2, dim1=1, dim2=2), dim=1, keepdim=True)\n",
    "            source = source_fun(x_i)\n",
    "            pde_loss = torch.mean((lap - source)**2)\n",
    "\n",
    "            # boundary loss\n",
    "            bc_true = sol_fun(x_b)\n",
    "            bc_pred = model(x_b)\n",
    "            bc_loss = torch.mean((bc_pred-bc_true)**2)\n",
    "\n",
    "            loss = alpha * pde_loss + bc_loss\n",
    "            loss.backward()\n",
    "            return loss\n",
    "\n",
    "        if _ % 50 == 0 and _ < 500:\n",
    "            model.update_grid_from_samples(x_i)\n",
    "\n",
    "        optimizer.step(closure)\n",
    "        sol = sol_fun(x_i)\n",
    "        loss = alpha * pde_loss + bc_loss\n",
    "        l2 = torch.mean((model(x_i) - sol)**2)\n",
    "        l2s.append(l2.item())\n",
    "\n",
    "        if _ % log == 0:\n",
    "            pbar.set_description(\"pde loss: %.2e | bc loss: %.2e | l2: %.2e \" % (pde_loss.cpu().detach().numpy(), bc_loss.cpu().detach().numpy(), l2.detach().numpy()))\n",
    "\n",
    "    return l2s\n",
    "    \n",
    "    \n",
    "if mode == 'fine_tune':\n",
    "    l2s_fine_tune = train()\n",
    "if mode == 'from_scratch':\n",
    "    l2s_from_scratch = train()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "6e62456e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/vKXv+hi9TVrmsOHD9Oll15KgiDQlClTmmWrvSYff/wxpaSk0DnnnENr1qxRuziaFPc7UbpcLhw7dgwlJSUwm81o1aoVMjMzYbFYqn19YWEhRo4ciT179uCVV17BmDFjIAhCjEutbR6PB+PHj8fcuXPx97//HXPnzkVaWlqNr2/oOWDKa+g5+Oyzz3D33XfD4XAgPz8fl1xySYxLrH0HDx7EqFGj8PPPP+Opp57CE088ccaOmJGaXT1QO7pFy759+2jy5MnUvXv38F7bDoeDMjIyaOjQofTBBx9U2rdekiSaM2cO2Ww26t69O23btk3F0uvDp59+SqmpqdS+fXv6/vvvz/h9Q88BU15Dz4Hb7ab777+fAND111+vuYSTWhMMBumpp54ig8FAf/3rX6tNgNlc60HcBZdQKEQfffQRtW/fnjIyMui2226jDz/8kL799ltavXo1zZ07l66//npKTU2lyy67jAoLC+n333+n6667jgDQAw88oOmEk1pz6NAhuvjiiyvt1dGYc8CU1ZhzsG3bNurWrRvZ7XZ66623uMuzAb7//ntq3749paam0qeffkpEjTsH8SSugosoivTGG29QQkICXXnllbR161YKhUK0du1amjVrFs2aNYt27NhBgUCAvvvuO+rfvz+1b9+eWrVqRS1atKDPPvtM7UPQpaq7DD777LMNOgddunTR5NYEetWYetCqVSsym83Us2fPuLvJxUpJSQn9/e9/DyfAfPXVV5t1PYir4PLNN99Qamoq/f3vf6eSkpLwk9eUKVMIAAEIL36UJIkOHjxIgwYNopSUFK5QClizZg1lZmYSALrxxhvrfQ4uuugiGjJkCM+8UUhj60Hr1q15sWwTSZJE77zzDlksFjIYDM26HhjUGelRntfrxTPPPIPMzEy8+uqrSE1NrXUgXhAEtG/fHm+88QasVitWr14dw9LGpz59+uC8887Deeedh5kzZ9b7HMyePRu7d+9Gfn5+DEsbn5pSD0RRxKeffhrD0sYfQRCQnZ2NPn36oFOnTs26HsRNcNm4cSN++uknPPDAA2jbtm29ZngJgoDevXvj5ptvxgcffACPxxODksavjRs3YsOGDXjwwQf5HKiE64H6Nm7ciG3btjX7emBSuwBK+fbbb2G1WvH//t//w44dOxAKhcK/O3nyZPh/Hzp0CNu2bQv//9TUVFx33XXI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\n",
      "text/plain": [
       "<Figure size 500x400 with 18 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot()\n",
    "if mode == 'fine_tune':\n",
    "    plt.savefig('./pde_fine_tune.pdf', bbox_inches='tight', dpi=200)\n",
    "if mode == 'from_scratch':\n",
    "    plt.savefig('./pde_from_scratch.pdf', bbox_inches='tight', dpi=200)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "301c304f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(l2s_fine_tune)\n",
    "plt.plot(l2s_from_scratch)\n",
    "plt.yscale('log')\n",
    "plt.legend(['w/ prior knowledge', 'w/o prior knowledge'])\n",
    "plt.ylabel('L2 squared error', fontsize=15)\n",
    "plt.xlabel('training steps', fontsize=15)\n",
    "plt.savefig('./pde_loss.pdf', bbox_inches='tight', dpi=200)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
